SQL GROUP BY Statement

समान मान वाली पंक्तियों को सारांश पंक्तियों में समूहित करने के लिए GROUP BY के बारे में जानें

GROUP BY Statement क्या हैं?

ग्रुप बाय स्टेटमेंट समान मूल्यों वाली पंक्तियों को सारांश पंक्तियों में समूहित करता है, जैसे "प्रत्येक देश में ग्राहकों की संख्या जानने के लिए"।

परिणाम-सेट को एक या अधिक कॉलम द्वारा समूहीकृत करने के लिए ग्रुप बाय स्टेटमेंट का उपयोग अक्सर समग्र कार्यों (COUNT(), MAX(), MIN(), SUM(), AVG()) के साथ किया जाता है।

सिंटैक्स द्वारा समूह

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

प्रदर्शन डेटाबेस

नीचे नॉर्थविंड नमूना डेटाबेस में "ग्राहक" तालिका से एक चयन है:

ग्राहक तालिका

+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| CustomerID | CustomerName                   | ContactName    | Address           | City     | PostalCode | Country |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| 1          | Alfreds Futterkiste            | Maria Anders   | Obere Str. 57     | Berlin   | 12209      | Germany |
| 2          | Ana Trujillo Emparedados...    | Ana Trujillo   | Avda. Constitución| México   | 05021      | Mexico  |
| 3          | Antonio Moreno Taquería        | Antonio Moreno | Mataderos 2312    | México   | 05023      | Mexico  |
| 4          | Around the Horn                | Thomas Hardy   | 120 Hanover Sq.   | London   | WA1 1DP    | UK      |
| 5          | Berglunds snabbköp             | Christina Berg | Berguvsvägen 8    | Luleå    | S-958 22   | Sweden  |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+

उदाहरणों द्वारा एसक्यूएल ग्रुप

निम्नलिखित SQL कथन प्रत्येक देश में ग्राहकों की संख्या सूचीबद्ध करता है:

उदाहरण

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

निष्कर्ष

COUNT(CustomerID)
Country
1
Germany
2
Mexico
1
UK
1
Sweden

निम्नलिखित SQL कथन प्रत्येक देश में ग्राहकों की संख्या को उच्चतम से निम्नतम तक क्रमबद्ध करता है:

उदाहरण

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

निष्कर्ष

COUNT(CustomerID)
Country
2
Mexico
1
Germany
1
UK
1
Sweden

अतिरिक्त प्रदर्शन डेटाबेस

नॉर्थविंड नमूना डेटाबेस में "ऑर्डर" तालिका से एक चयन:

आदेश तालिका

+---------+------------+-----------+------------+------------+
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
+---------+------------+-----------+------------+------------+
| 10248   | 90         | 5         | 1996-07-04 | 3         |
| 10249   | 81         | 6         | 1996-07-05 | 1         |
| 10250   | 34         | 4         | 1996-07-08 | 2         |
+---------+------------+-----------+------------+------------+

और "शिपर्स" तालिका से एक चयन:

शिपर्स शेड्यूल

+-----------+-------------------+
| ShipperID | ShipperName       |
+-----------+-------------------+
| 1         | Speedy Express    |
| 2         | United Package    |
| 3         | Federal Shipping  |
+-----------+-------------------+

जॉइन के साथ ग्रुप बाय का उदाहरण

निम्नलिखित SQL कथन प्रत्येक शिपर द्वारा भेजे गए ऑर्डर की संख्या सूचीबद्ध करता है:

उदाहरण

SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

निष्कर्ष

ShipperName
NumberOfOrders
Speedy Express
1
United Package
1
Federal Shipping
1

दृश्य प्रतिनिधित्व द्वारा समूह

मूल डेटा

Alfreds Futterkiste - Germany
Ana Trujillo - Mexico
Antonio Moreno - Mexico
Around the Horn - UK
Berglunds - Sweden
GROUP BY Country

समूहीकृत डेटा

Germany
1 ग्राहक
Mexico
2 ग्राहक
UK
1 ग्राहक
Sweden
1 ग्राहक

टिप्पणी:GROUP BY सभी पंक्तियों को समान देश मानों के साथ समूहित करता है और प्रत्येक समूह के लिए समग्र फ़ंक्शन का उपयोग करता है।

Aggregate Functions

COUNT()

पंक्तियों की संख्या लौटाता है

SELECT COUNT(*)
FROM Customers
GROUP BY Country;

MAX()

अधिकतम मूल्य देता है

SELECT MAX(Price)
FROM Products
GROUP BY CategoryID;

MIN()

न्यूनतम मान लौटाता है

SELECT MIN(Price)
FROM Products
GROUP BY CategoryID;

SUM()

कुल राशि देता है

SELECT SUM(Quantity)
FROM OrderDetails
GROUP BY OrderID;

AVG()

औसत मान लौटाता है

SELECT AVG(Price)
FROM Products
GROUP BY CategoryID;

मल्टीपल कॉलम ग्रुप बाय

आप एक से अधिक कॉलम के आधार पर समूह बना सकते हैं:

उदाहरण

SELECT Country, City, COUNT(CustomerID)
FROM Customers
GROUP BY Country, City;

निष्कर्ष

Country
City
COUNT(CustomerID)
Germany
Berlin
1
Mexico
México D.F.
2
UK
London
1
Sweden
Luleå
1

नोट:

एकाधिक स्तंभों के आधार पर समूहीकरण करते समय, स्तंभ मानों के प्रत्येक अद्वितीय संयोजन के लिए अलग-अलग समूह बनाए जाते हैं।

अभ्यास

ग्रुप बाय स्टेटमेंट में आमतौर पर उपयोग किए जाने वाले समग्र कार्य क्या हैं?

COUNT(), MAX(), MIN(), SUM(), AVG()
✓ ठीक है! समूहीकृत डेटा पर गणना करने के लिए इन समग्र कार्यों का उपयोग आमतौर पर GROUP BY में किया जाता है
SELECT(), INSERT(), UPDATE(), DELETE()
✗ ग़लत! ये समग्र कार्य नहीं हैं, ये SQL कमांड हैं
JOIN(), UNION(), INTERSECT(), EXCEPT()
✗ ग़लत! ये समग्र फ़ंक्शन नहीं हैं, ये SQL सेट ऑपरेटर हैं
HAVING(), WHERE(), ORDER BY(), DISTINCT()
✗ ग़लत! ये समग्र कार्य नहीं हैं, ये SQL क्लॉज हैं